Dynamically creating multimodal markup documents

ABSTRACT

Methods, systems, and products for dynamically creating a multimodal markup document are provided that include selecting a multimodal markup template, identifying in dependence upon the multimodal markup template a dynamic content module, instantiating the dynamic content module, executing a dynamic content creation function in the instantiated dynamic content module, receiving dynamic content from the dynamic content creation function, and including the dynamic content in the multimodal markup template. Selecting a multimodal markup template may be carried out by identifying a multimodal markup template from URI encoded data embedded in a request for a multimodal markup document from a multimodal browser. The multimodal markup template may include static content and the dynamic content may include XHTML+Voice content.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The field of the invention is data processing, or, more specifically,methods, systems, and products for displaying available menu choices ina multimodal browser.

2. Description of Related Art

User interaction with applications running on small devices through akeyboard or stylus has become increasingly limited and cumbersome asthose devices have become increasingly smaller. In particular, smallhandheld devices like mobile phones and PDAs serve many functions andcontain sufficient processing power to support user interaction throughother modes, such as multimodal access. Devices which support multimodalaccess combine multiple user input modes or channels in the sameinteraction allowing a user to interact with the applications on thedevice simultaneously through multiple input modes or channels. Themethods of input include speech recognition, keyboard, touch screen,stylus, mouse, handwriting, and others. Multimodal input often makesusing a small device easier.

Multimodal applications often run on servers that serve up multimodalweb pages for display on a multimodal browser. A ‘multimodal browser,’as the term is used in this specification, generally means a web browsercapable of receiving multimodal input and interacting with users withmultimodal output. Multimodal browsers typically render web pageswritten in XHTML+Voice (X+V).

X+V provides a markup language that enables users to interact with anmultimodal application often running on a server through spoken dialogin addition to traditional means of input such as keyboard strokes andmouse pointer action. X+V adds spoken interaction to standard webcontent by integrating XHTML (eXtensible Hypertext Markup Language) andspeech recognition vocabularies supported by Voice XML. For visualmarkup, X+V includes the XHTML standard. For voice markup, X+V includesa subset of VoiceXML. For synchronizing the VoiceXML elements withcorresponding visual interface elements, X+V uses events. XHTML includesvoice modules that support speech synthesis, speech dialogs, command andcontrol, and speech grammars. Voice handlers can be attached to XHTMLelements and respond to specific events. Voice interaction features areintegrated with XHTML and can consequently be used directly within XHTMLcontent.

JavaServer Pages (JSP) currently provides a platform-independent,server-side technology for dynamically generating XML and HTML content.Current JSP technologies have not been applied to the creation ofmultimodal web pages however. The additional speech input and outputmodes of X+V applications require additional interactions between dataand visual elements resulting in a more complex structure than that ofthe typical XML or HTML page. There is therefore an ongoing need fordynamically creating multimodal markup documents.

SUMMARY OF THE INVENTION

Methods, systems, and products for dynamically creating a multimodalmarkup document are provided that include selecting a multimodal markuptemplate, identifying in dependence upon the multimodal markup templatea dynamic content module, instantiating the dynamic content module,executing a dynamic content creation function in the instantiateddynamic content module, receiving dynamic content from the dynamiccontent creation function, and including the dynamic content in themultimodal markup template. Selecting a multimodal markup template maybe carried out by identifying a multimodal markup template from URIencoded data embedded in a request for a multimodal markup document froma multimodal browser. The multimodal markup template may include staticcontent and the dynamic content may include XHTML+Voice content.

Embodiments may also include sending the multimodal markup templateincluding the dynamic content to a multimodal browser in a responsemessage. Embodiments may also include creating a dynamic content moduleand creating a multimodal markup template.

The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescriptions of exemplary embodiments of the invention as illustrated inthe accompanying drawings wherein like reference numbers generallyrepresent like parts of exemplary embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 sets forth a network diagram illustrating an exemplary system ofservers and client devices.

FIG. 2 sets forth a block diagram of automated computing machinerycomprising an exemplary server capable of supporting a web applicationcapable of dynamically creating a multimodal markup document.

FIG. 3 sets forth a block diagram of automated computing machinerycomprising an exemplary client that supports a multimodal browser usefulin displaying dynamically created multimodal markup document.

FIG. 4 sets forth a flow chart illustrating an exemplary method fordynamically creating a multimodal markup document.

FIG. 5 sets forth a line drawing of an exemplary multimodal markuptemplate useful in dynamically creating a multimodal markup documents.

FIG. 6 sets forth an exemplary flow chart illustrating a method forcreating dynamic content creation modules and multimodal markuptemplates.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS Introduction

The present invention is described to a large extent in thisspecification in terms of methods for displaying available menu choicesin a multimodal browser. Persons skilled in the art, however, willrecognize that any computer system that includes suitable programmingmeans for operating in accordance with the disclosed methods also fallswell within the scope of the present invention. Suitable programmingmeans include any means for directing a computer system to execute thesteps of the method of the invention, including for example, systemscomprised of processing units and arithmetic-logic circuits coupled tocomputer memory, which systems have the capability of storing incomputer memory, which computer memory includes electronic circuitsconfigured to store data and program instructions, programmed steps ofthe method of the invention for execution by a processing unit.

The invention also may be embodied in a computer program product, suchas a diskette or other recording medium, for use with any suitable dataprocessing system. Embodiments of a computer program product may beimplemented by use of any recording medium for machine-readableinformation, including magnetic media, optical media, or other suitablemedia. Persons skilled in the art will immediately recognize that anycomputer system having suitable programming means will be capable ofexecuting the steps of the method of the invention as embodied in aprogram product. Persons skilled in the art will recognize immediatelythat, although most of the exemplary embodiments described in thisspecification are oriented to software installed and executing oncomputer hardware, nevertheless, alternative embodiments implemented asfirmware or as hardware are well within the scope of the presentinvention.

Dynamically Creating Multimodal Markup Documents

Exemplary methods, systems, and products for dynamically creating amultimodal markup document according to embodiments of the presentinvention are described with reference to the accompanying drawings,beginning with FIG. 1. FIG. 1 sets forth a network diagram illustratingan exemplary system of servers and client devices each of which iscapable of supporting a multimodal application such as multimodal webapplications and multimodal web browsers in accordance with the presentinvention. The system of FIG. 1 includes a number of computers connectedfor data communications in networks.

The data processing system of FIG. 1 includes wide area network (“WAN”)(101) and local area network (“LAN”) (103). The network connectionaspect of the architecture of FIG. 1 is only for explanation, not forlimitation. In fact, systems having multimodal applications according toembodiments of the present invention may be connected as LANs, WANs,intranets, internets, the Internet, webs, the World Wide Web itself, orother connections as will occur to those of skill in the art. Suchnetworks are media that may be used to provide data communicationsconnections between various devices and computers connected togetherwithin an overall data processing system.

In the example of FIG. 1, server (106) implements a gateway, router, orbridge between LAN (103) and WAN (101). Server (106) may be any computercapable of accepting a request for a resource from a client device andresponding by providing a resource to the requester. One example of sucha server is an HTTP (‘HyperText Transport Protocol’) server or ‘webserver.’ The exemplary server (106) is capable of serving up multimodalmarkup documents dynamically created in accordance with the presentinvention. Such dynamically multimodal markup documents are created byselecting a multimodal markup template, identifying in dependence uponthe multimodal markup template a dynamic content module, instantiatingthe dynamic content module, executing a dynamic content creationfunction in the instantiated dynamic content module, receiving dynamiccontent from the dynamic content creation function, and including thedynamic content in the multimodal markup template.

As discussed in more detail below, multimodal markup document is amarkup document for multimodal interaction with a user. A multimodalmarkup document typically includes a visual markup and voice markup. X+Vis one example of a multimodal markup language useful in implementingembodiments of the present invention. For visual markup, X+V includesthe XHTML standard. For voice markup, X+V includes a subset of VoiceXML.A multimodal markup template is a multimodal document includingidentifications to dynamic content modules capable of creating dynamiccontent for insertion in the template. A dynamic content module is asoftware component capable of dynamically creating content for inclusionin the multimodal markup template.

In the example of FIG. 1, several exemplary client devices including aPDA (112), a computer workstation (104), a mobile phone (110), and apersonal computer (108) are connected to a WAN (101). Network-enabledmobile phone (110) connects to the WAN (101) through a wireless link(116), and the PDA (112) connects to the network (101) through awireless link (114). In the example of FIG. 1, the personal computer(108) connects through a wireline connection (120) to the WAN (101) andthe computer workstation (104) connects through a wireline connection(122) to the WAN (101). In the example of FIG. 1, the laptop (126)connects through a wireless link (118) to the LAN (103) and the personalcomputer (102) connects through a wireline connection (124) to LAN(103).

Each of the exemplary client devices (108, 112, 104, 110, 126, and 102)are capable of supporting a multimodal browser coupled for datacommunications with a multimodal web application on the server (106) andare capable displaying multimodal markup documents dynamically createdaccording to embodiments of the present invention. A ‘multimodalbrowser,’ as the term is used in this specification, generally means aweb browser capable of receiving multimodal input and interacting withusers with multimodal output. Multimodal browsers typically render webpages written in XHTML+Voice (X+V).

The arrangement of servers and other devices making up the exemplarysystem illustrated in FIG. 1 are for explanation, not for limitation.Data processing systems useful according to various embodiments of thepresent invention may include additional servers, routers, otherdevices, and peer-to-peer architectures, not shown in FIG. 1, as willoccur to those of skill in the art. Networks in such data processingsystems may support many data communications protocols, including forexample TCP/IP, HTTP, WAP, HDTP, and others as will occur to those ofskill in the art. Various embodiments of the present invention may beimplemented on a variety of hardware platforms in addition to thoseillustrated in FIG. 1.

Multimodal applications that support dynamically creating a multimodalmarkup document according to embodiments of the present invention aregenerally implemented with computers, that is, with automated computingmachinery. For further explanation, therefore, FIG. 2 sets forth a blockdiagram of automated computing machinery comprising an exemplary server(151) capable of supporting a web application capable of dynamicallycreating a multimodal markup document according to embodiments of thepresent invention.

The server (151) of FIG. 2 includes at least one computer processor(156) or ‘CPU’ as well as random access memory (168) (“RAM”) which isconnected through a system bus (160) to processor (156) and to othercomponents of the computer. Stored in RAM (168) is an operating system(154). Operating systems useful in computers according to embodiments ofthe present invention include UNIX™, Linux™, Microsoft NT™, AIX™, IBM'si5/OS, and many others as will occur to those of skill in the art.

Also stored in RAM (168) is a multimodal application (188) comprising adynamic content creation engine (191) capable of dynamically creating amultimodal markup document by selecting, from the multimodal templatelibrary (193) a multimodal markup template; identifying in dependenceupon the multimodal markup template a dynamic content module;instantiating the dynamic content module; executing a dynamic contentcreation function in the instantiated dynamic content module; receivingdynamic content from the dynamic content creation function; andincluding the dynamic content in the multimodal markup template.

As discussed below, a multimodal markup template may be implemented as aJava Server Pages (‘JSP’) page and a dynamic content module may beimplemented as a Java Bean. The exemplary a multimodal application (188)therefore is illustrated as running on a Java Virtual Machine (‘JVM’)(192) providing a runtime framework for use of JSPs and Java Beans.

Server (151) of FIG. 2 includes non-volatile computer memory (166)coupled through a system bus (160) to processor (156) and to othercomponents of the server (151). Non-volatile computer memory (166) maybe implemented as a hard disk drive (170), optical disk drive (172),electrically erasable programmable read-only memory space (so-called‘EEPROM’ or ‘Flash’ memory) (174), RAM drives (not shown), or as anyother kind of computer memory as will occur to those of skill in theart.

The exemplary server (151) of FIG. 2 includes one or more input/outputinterface adapters (178). Input/output interface adapters in computersimplement user-oriented input/output through, for example, softwaredrivers and computer hardware for controlling output to display devices(180) such as computer display screens, as well as user input from userinput devices (181) such as keyboards and mice.

The exemplary server (151) of FIG. 2 includes a communications adapter(167) for implementing data communications (184) with other computers(182). Such data communications may be carried out serially throughRS-232 connections, through external buses such as USB, through datacommunications networks such as IP networks, and in other ways as willoccur to those of skill in the art. Communications adapters implementthe hardware level of data communications through which one computersends data communications to another computer, directly or through anetwork. Examples of communications adapters useful in multimodalapplications according to embodiments of the present invention includemodems for wired dial-up communications, Ethernet (IEEE 802.3) adaptersfor wired network communications, and 802.11b adapters for wirelessnetwork communications.

Multimodal markup documents that are dynamically created according toembodiments of the present invention are generally displayed onmultimodal web browsers installed on automated computing machinery. Forfurther explanation, therefore, FIG. 3 sets forth a block diagram ofautomated computing machinery comprising an exemplary client (152) thatsupports a multimodal browser useful in displaying dynamically createdmultimodal markup documents.

The client (152) of FIG. 3 includes at least one computer processor(156) or ‘CPU’ as well as random access memory (168) (“RAM”) which isconnected through a system bus (160) to processor (156) and to othercomponents of the computer. Stored in RAM (168) is an operating system(154). Operating systems useful in computers according to embodiments ofthe present invention include UNIX™, Linux™, Microsoft NT™, AIX™, IBM'si5/OS, and many others as will occur to those of skill in the art.

Also stored in RAM (168) is a multimodal browser (195) capable ofdisplaying multimodal markup documents dynamically created according toembodiments of the present invention. The exemplary multimodal browser(195) of FIG. 3 also includes a user agent (197) capable of receivingfrom a user speech and converting the speech to text by parsing thereceived speech against a grammar. A grammar is a set of words orphrases that the user agent will recognize. Typically each dialogdefined by a particular form or menu being presented to a user has oneor more grammars associated with the form or menu. Such grammars areactive only when the user is in that dialog.

Client (152) of FIG. 3 includes non-volatile computer memory (166)coupled through a system bus (160) to processor (156) and to othercomponents of the client (152). Non-volatile computer memory (166) maybe implemented as a hard disk drive (170), optical disk drive (172),electrically erasable programmable read-only memory space (so-called‘EEPROM’ or ‘Flash’ memory) (174), RAM drives (not shown), or as anyother kind of computer memory as will occur to those of skill in theart.

The exemplary client of FIG. 3 includes one or more input/outputinterface adapters (178). Input/output interface adapters in computersimplement user-oriented input/output through, for example, softwaredrivers and computer hardware for controlling output to display devices(180) such as computer display screens, as well as user input from userinput devices (181) such as keyboards and mice.

The exemplary client (152) of FIG. 3 includes a communications adapter(167) for implementing data communications (184) with other computers(182). Such data communications may be carried out serially throughRS-232 connections, through external buses such as USB, through datacommunications networks such as IP networks, and in other ways as willoccur to those of skill in the art. Communications adapters implementthe hardware level of data communications through which one computersends data communications to another computer, directly or through anetwork. Examples of communications adapters useful in multimodalbrowsers according to embodiments of the present invention includemodems for wired dial-up communications, Ethernet (IEEE 802.3) adaptersfor wired network communications, and 802.11b adapters for wirelessnetwork communications.

For further explanation, FIG. 4 sets forth a flow chart illustrating anexemplary method for dynamically creating a multimodal markup document.As discussed above, a multimodal markup document is a markup documentcapable of display in a multimodal browser that includes markup forinteracting with a user through multimodal access. A multimodal markupdocument typically includes a visual markup and voice markup. X+V is oneexample of a multimodal markup language useful in implementingembodiments of the present invention. For visual markup, X+V includesthe XHTML standard. For voice markup, X+V includes a subset of VoiceXML.

The method of FIG. 4 includes selecting (408) a multimodal markuptemplate (414). A multimodal markup template is a multimodal documentincluding identifications to dynamic content modules capable of creatingdynamic content for insertion in the template. In the example of FIG. 4the multimodal markup template (414) also includes static content (416).Including static content in the multimodal markup templateadvantageously reduces the time necessary to dynamically create amultimodal web page using the multimodal markup template because thestatic content is not required to be created dynamically therebyreducing the overall quantity of content created dynamically.

A multimodal markup template according to embodiments of the presentinvention may be implemented as a Java Server Pages page. Java ServerPages provides a technology for dynamically creating markup documents. AJSP page is a markup document that contains additional bits of Java codethat execute application logic to generate dynamic content. The Javacode is typically identified by markup tags within the JSP page. JSPpages are often compiled into servlets that generate dynamic content forinclusion in the JSP page. ‘Servlets’ are programs written in the Javaprogramming language that run on a server, as opposed to a browser,where Java programs running in browsers are referred to as ‘applets.’The Java code is typically extracted from the JSP page and the dynamiccontent is inserted in the Java code's place. Detailed information aboutservlets can be found at http://java.sun.com/progucts/servlet. Detailedinformation about JSPs can be found athttp://java.sun.com/products/jsp/. ‘Java,’ ‘Java Server Pages,’ and‘JSP’ are trademarks of Sun Microsystems, Inc.

In the example of FIG. 4, selecting (408) a multimodal markup template(414) is carried out by identifying a multimodal markup template fromURI encoded data (406) embedded in a request (404) for a multimodalmarkup document from a multimodal browser (195). In the example of FIG.4, a multimodal application (188) retrieves the URI encoded data (406)from the request (404) and retrieves a multimodal markup template (414)from a library (410) of multimodal markup templates.

The method of FIG. 4 includes identifying (412) in dependence upon themultimodal markup template (414) a dynamic content module (418).Identifying (412) a dynamic content module (418) may be carried out bysearching the multimodal markup template for tags identifying a segmentof code that identifies dynamic content module (418).

A dynamic content module is a software component capable of dynamicallycreating content for inclusion in the multimodal markup template. Adynamic content module may be implemented as a Java Bean. A Java Bean isa reusable Java software component that may be designed to createdynamic multimodal content and may be called from a JSP page. Such aJava Bean may be called from a JSP page through the use of the followingline of XML.

<jsp: useBean id=“SomeBean” class=“DynamicConentCreation.SomeBean”

The line above of instantiates the bean “DynamicConentCreation.SomeBean”as SomeBean.

The method of FIG. 4 also includes instantiating (420) the dynamiccontent module (422) and executing (426) a dynamic content creationfunction (424) in the instantiated dynamic content module (422).Executing a dynamic content creation function in the method of FIG. 4results in the dynamic creation of multimodal content. As discussedabove, XHTML+Voice content is one form of such multimodal content thatmay be dynamically created in accordance with the present invention.

Instantiating (420) the dynamic content module (422) and executing (426)a dynamic content creation function (424) may implemented byinstantiating a Java Bean and calling a content creation function withinthe Java Bean. Continuing with the example above, consider the followinglines within a JSP page. <jsp: useBean id=“SomeBean” class =“DynamicConentCreation.SomeBean” <%SomeBean.GetDynamicConent(SomeParameter, SomeOtherParameter%>

The first of the two exemplary lines in the JSP above instantiates thebean “DynamicConentCreation.SomeBean” as SomeBean. The second line callsa dynamic content creation function called getDynamicConentparameterized with SomeParameter, and SomeOtherParameter. The exemplarydynamic content creation function returns dynamic multimodal content forinclusion in the multimodal markup template.

The method of FIG. 4 also includes receiving (430) dynamic content (432)from the dynamic content creation function (424) and including (434) thedynamic content (432) in the multimodal markup template (414). Includingthe dynamic content in the multimodal markup template often includesremoving tags identifying the dynamic content creation module andinserting in the place of the tags the dynamically created content.

The method of FIG. 4 also includes sending the multimodal markuptemplate including the dynamic content to a multimodal browser in aresponse message. The multimodal markup template including the dynamiccontent may be displayed in a multimodal browser without a user everknowing or caring how the displayed content is created. That is, thedynamic creation of the multimodal content may occur completelytransparently to a user.

For further explanation, FIG. 5 sets forth a line drawing of anexemplary multimodal markup template useful in dynamically creating amultimodal markup documents according to embodiments of the presentinvention. The exemplary multimodal markup template (414) of FIG. 5includes an identification of an xvModule for creating an XHTML headerhaving a content creation function generateHead( ) (503) that whenexecuted dynamic creates an XHTML header (502) and inserts thedyncaically created header within the multimodal markup template (414).

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating an JavaScript having acontent creation function generateJavaScript( ) (507) that when executeddynamic creates JavaScript (504) for inclusion in the multimodal markuptemplate (414). JavaScript is an object-oriented scripting language usedin many websites. A script typically includes a list of commands thatcan be executed without user interaction and a scripting language suchas JavaScript is a simple programming language for writing such scripts.

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating VoiceXML having a contentcreation function generateVoiceXML( ) (507) that when executed dynamiccreates one or more Voice XML dialogs (506) for inclusion within themultimodal markup template (414). There are two kinds of dialogs inVoice XML: forms and menus. Voice forms define an interaction thatcollects values for a set of form item variables. Each form itemvariable of a voice form may specify a grammar that defines theallowable inputs for that form item. If a form-level grammar is present,it can be used to fill several form items from one utterance. A menupresents the user with a choice of options and then transitions toanother dialog based on that choice.

Forms are interpreted by a form interpretation algorithm (FIA). An FIAtypically includes a main loop that repeatedly selects form itemscollects, user input, and identifies any actions to be taken in responseto input items. Interpreting a voice form item typically includesselecting and playing one or more voice prompts, collecting user input,either a response that fills in one or more input items, or a throwingof some event (a help even, for example), and interpreting any actionsthat pertained to the newly filled in input items.

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating X+V Sync tags having acontent creation function generateSyncTags( ) (509) that when executeddynamic creates one or more X+V sync tags (508) for inclusion within themultimodal markup template (414). To synchronize the receipt of spokeninformation and visual tags, X+V provides a <sync> tag. The <sync> tagsynchronizes data entered through various multimodal input. That is, the<sync> tag synchronizes accepted speech commands received in themultimodal browser with visual tags displayed in the multimodal browser.<Sync> synchronizes the value property of an XHTML input control with aVoiceXML field in a one to one manner.

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating XML Events having acontent creation function generateXMLEvents( ) (511) that when executeddynamic creates one or more XML events (510) for inclusion within themultimodal markup template (414). An XML event is the representation ofsome asynchronous occurrence, such as a mouse click on a GUI display, oran arithmetical error in the value of an attribute of the element, orany other occurrence. An XML event is targeted at an associated XMLelement in an XML document.

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating XML event handlers havinga content creation function generateXMLEventHandlers( ) (513) that whenexecuted dynamic creates one or more XML event handlers (521) forinclusion within the multimodal markup template (414). As discussedabove, an XML event is the representation of some asynchronousoccurrence, such as a mouse click on a GUI display. An event handler isa function for executing an action in response to the event.

The exemplary multimodal markup template (414) of FIG. 5 also includesan identification of an xvModule for creating Visual XHTML contenthaving a content creation function generateXHMLBody( ) (515) that whenexecuted dynamic creates XHTML conent (512) for inclusion within themultimodal markup template (414). As discussed above, an XHTML providesthe visual markup for the multimodal markup language X+V.

The exemplary multimodal markup template (414) of FIG. 5 also includesstatic content (525). Static content advantageously provides content inthe multimodal markup template that is not dynamically created andtherefore reduces overall processing necessary to dynamically create amultimodal markup document from the multimodal markup template of FIG.5.

As discussed above, dynamic multimodal content is created according toembodiments of the present invention by calling content creationfunctions in dynamic content modules designed to produce specificmultimodal content. For further explanation, FIG. 6 sets forth anexemplary flow chart illustrating a method for creating dynamic contentcreation modules and multimodal markup templates in accordance with thepresent invention.

The method of FIG. 6 includes creating (602) a dynamic content module(422). As discussed above, a dynamic content module may be implemented aJava Bean. Creating (602) a dynamic content module (422) may thereforebe carried out by creating a Java Bean designed to dynamically createmultimodal content. Such Java Beans may be created with an authoringtool such as for example the JavaBeans Development Kit (‘BDK’). The BDKprovides a reference Bean container, and reusable example source codefor use by bean developers.

The method of FIG. 6 includes creating (604) a multimodal markuptemplate (414). As discussed above, a multimodal markup template may beimplemented as a JSP page. Creating (604) a multimodal markup template(414) may be carried out through the use of an authoring tool such asfor example Java Web Services Developer Pack 1. The Java Web ServicesDeveloper Pack is an integrated toolkit that allows Java developers tobuild and test markup documents, Web services, and Web applications.

Creating (604) a multimodal markup template (414) according to themethod of FIG. 6 is typically carried out by creating (606) staticcontent (416) and inserting (608) the static content (416) in themultimodal markup template. Static content advantageously providescontent in the multimodal markup template that is not dynamicallycreated and therefore reduces overall processing necessary todynamically create a multimodal markup document from the multimodalmarkup template of FIG. 5.

Creating (604) a multimodal markup template (414) according to themethod of FIG. 6 is also carried out by identifying (610) a dynamiccontent module (610) and inserting (612) a dynamic content module ID(418) in the multimodal markup template (414). As discussed above, adynamic content module may be implemented as a Java Bean and called froma JSP page through the use an identification in the JSP such as:

<jsp: useBean id=“SomeBean” class=“DynamicConentCreation.SomeBean”

for instantiating the bean “DynamicConentCreation.SomeBean” as SomeBean.

Dynamically creating a multimodal markup document according toembodiments of the present invention provides a number of advantagesamong others. Such advantages include:

-   -   Template libraries may offload visual aspects of the dynamic        content to easily maintainable external files.    -   A web master can modify the appearance of the templates by        simply editing the XHTML content of templates, without requiring        the programming knowledge to modify dynamic content modules.    -   Dynamic content modules according to embodiments of the present        invention may be highly modularized within a tool.

It will be understood from the foregoing description that modificationsand changes may be made in various embodiments of the present inventionwithout departing from its true spirit. The descriptions in thisspecification are for purposes of illustration only and are not to beconstrued in a limiting sense. The scope of the present invention islimited only by the language of the following claims.

1. A method of dynamically creating a multimodal markup document, themethod comprising: selecting a multimodal markup template; identifyingin dependence upon the multimodal markup template a dynamic contentmodule; instantiating the dynamic content module; executing a dynamiccontent creation function in the instantiated dynamic content module;receiving dynamic content from the dynamic content creation function;and including the dynamic content in the multimodal markup template. 2.The method of claim 1 wherein selecting a multimodal markup templatefurther comprises identifying a multimodal markup template from URIencoded data embedded in a request for a multimodal markup document froma multimodal browser.
 3. The method of claim 1 wherein the multimodalmarkup template further comprises static content.
 4. The method of claim1 wherein the dynamic content further comprises XHTML+Voice content. 5.The method of claim 1 further comprising sending the multimodal markuptemplate including the dynamic content to a multimodal browser in aresponse message.
 6. The method of claim 1 further comprising creating adynamic content module.
 7. The method of claim 1 further comprisingcreating a multimodal markup template.
 8. A system of dynamicallycreating a multimodal markup document, the system comprising: a computerprocessor; a computer memory coupled for data transfer to the processor,the computer memory having disposed within it computer programinstructions comprising: a dynamic content creation engine capable of:selecting a multimodal markup template; identifying in dependence uponthe multimodal markup template a dynamic content module; instantiatingthe dynamic content module; executing a dynamic content creationfunction in the instantiated dynamic content module; receiving dynamiccontent from the dynamic content creation function; and including thedynamic content in the multimodal markup template.
 9. The system ofclaim 8 wherein the dynamic content creation engine further comprisescomputer program instructions capable of identifying a multimodal markuptemplate from URI encoded data embedded in a request for a multimodalmarkup document from a multimodal browser.
 10. The system of claim 8wherein the multimodal markup template further comprises static content.11. The system of claim 8 wherein the dynamic content further comprisesXHTML+Voice content.
 12. The system of claim 8 further comprisingcomputer program instructions capable of sending the multimodal markuptemplate including the dynamic content to a multimodal browser in aresponse message.
 13. A computer program product of dynamically creatinga multimodal markup document, the computer program product disposed upona recording medium, the computer program product comprising: computerprogram instructions that select a multimodal markup template; computerprogram instructions that identify in dependence upon the multimodalmarkup template a dynamic content module; computer program instructionsthat instantiate the dynamic content module; computer programinstructions that execute a dynamic content creation function in theinstantiated dynamic content module; computer program instructions thatreceive dynamic content from the dynamic content creation function; andcomputer program instructions that include the dynamic content in themultimodal markup template.
 14. The computer program product of claim 13wherein computer program instructions that select a multimodal markuptemplate further comprise computer program instructions that identify amultimodal markup template from URI encoded data embedded in a requestfor a multimodal markup document from a multimodal browser.
 15. Thecomputer program product of claim 13 wherein the multimodal markuptemplate further comprises static content.
 16. The computer programproduct of claim 13 wherein the dynamic content further comprisesXHTML+Voice content.
 17. The computer program product of claim 13further comprising computer program instructions that send themultimodal markup template including the dynamic content to a multimodalbrowser in a response message.